μλ°μ€ν¬λ¦½νΈμ μ΄ν°λ μ΄ν° ν¬νΌ 'enumerate'μ λν μ’ ν© κ°μ΄λ. μΈλ±μ€-κ° μ€νΈλ¦Ό μ²λ¦¬μ μ΅μ μλ°μ€ν¬λ¦½νΈ κ°λ°μμμ μ΄μ μ νμν©λλ€.
μλ°μ€ν¬λ¦½νΈ μ΄ν°λ μ΄ν° ν¬νΌ: Enumerate - μΈλ±μ€-κ° μ€νΈλ¦Ό μ²λ¦¬
μλ°μ€ν¬λ¦½νΈλ λμμμ΄ λ°μ νκ³ μμΌλ©°, μ΅κ·Ό μΈμ΄μ μΆκ°λ κΈ°λ₯λ€, νΉν μ΄ν°λ μ΄ν° ν¬νΌ(Iterator Helpers)λ λ°μ΄ν° μ‘°μ λ° μ²λ¦¬λ₯Ό μν κ°λ ₯ν μ λꡬλ₯Ό μ 곡ν©λλ€. μ΄ ν¬νΌλ€ μ€μμ enumerateλ μΈλ±μ€μ κ°μ΄ λͺ¨λ μ€μν λ°μ΄ν° μ€νΈλ¦Όμ λ€λ£° λ μ μ©ν μμ°μΌλ‘ λ보μ
λλ€. μ΄ κΈμμλ enumerate μ΄ν°λ μ΄ν° ν¬νΌμ λν μ’
ν©μ μΈ κ°μ΄λλ₯Ό μ 곡νλ©°, μ΅μ μλ°μ€ν¬λ¦½νΈ κ°λ°μμμ μ¬μ© μ¬λ‘, μ΄μ , κ·Έλ¦¬κ³ μ€μ μ μ© λ°©λ²μ νμν©λλ€.
μ΄ν°λ μ΄ν°μ μ΄ν°λ μ΄ν° ν¬νΌ μ΄ν΄νκΈ°
enumerateμ ꡬ체μ μΈ λ΄μ©μ μ΄ν΄λ³΄κΈ° μ μ, μλ°μ€ν¬λ¦½νΈμ μ΄ν°λ μ΄ν°μ μ΄ν°λ μ΄ν° ν¬νΌμ λ λμ λ§₯λ½μ μ΄ν΄νλ κ²μ΄ μ€μν©λλ€.
μ΄ν°λ μ΄ν°(Iterators)
μ΄ν°λ μ΄ν°λ μμλ₯Ό μ μνκ³ , μ’
λ£ μ μ μ¬μ μΌλ‘ λ°ν κ°μ κ°λ κ°μ²΄μ
λλ€. λ ꡬ체μ μΌλ‘ λ§ν΄, μ΄ν°λ μ΄ν°λ λ κ°μ§ μμ±μ κ°μ§ κ°μ²΄λ₯Ό λ°ννλ next() λ©μλλ₯Ό κ°μ§μΌλ‘μ¨ μ΄ν°λ μ΄ν° νλ‘ν μ½μ ꡬννλ λͺ¨λ κ°μ²΄μ
λλ€:
value: μνμ€μ λ€μ κ°.done: μ΄ν°λ μ΄ν°κ° μλ£λμλμ§ μ¬λΆλ₯Ό λνλ΄λ λΆλ¦¬μΈ κ°.
μ΄ν°λ μ΄ν°λ 컬λ μ μ΄λ λ°μ΄ν° μ€νΈλ¦Όμ μμλ€μ μννκ³ μ κ·Όνλ νμ€νλ λ°©λ²μ μ 곡ν©λλ€.
μ΄ν°λ μ΄ν° ν¬νΌ(Iterator Helpers)
μ΄ν°λ μ΄ν° ν¬νΌλ μ΄ν°λ μ΄ν°μ κΈ°λ₯μ νμ₯νμ¬ μΌλ°μ μΈ λ°μ΄ν° μ‘°μ μμ μ λ κ°κ²°νκ³ ννλ ₯ μκ² μνν μ μκ² ν΄μ£Όλ λ©μλμ λλ€. μ΄λ€μ μ΄ν°λ μ΄ν°λ₯Ό μ¬μ©ν ν¨μν μ€νμΌ νλ‘κ·Έλλ°μ κ°λ₯νκ² νμ¬ μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ λμ λλ€. μ΄λ¬ν ν¬νΌλ€μ μ’ μ’ μ½λ°± ν¨μλ₯Ό μΈμλ‘ λ°μΌλ©°, μ΄ ν¨μλ μ΄ν°λ μ΄ν°μ κ° μμμ μ μ©λ©λλ€.
μΌλ°μ μΈ μ΄ν°λ μ΄ν° ν¬νΌλ λ€μκ³Ό κ°μ΅λλ€:
map: μ΄ν°λ μ΄ν°μ κ° μμλ₯Ό λ³νν©λλ€.filter: 쑰건μ λ°λΌ μμλ₯Ό μ νν©λλ€.reduce: μμλ€μ λ¨μΌ κ°μΌλ‘ λμ ν©λλ€.forEach: κ° μμμ λν΄ ν¨μλ₯Ό μ€νν©λλ€.some: μ μ΄λ νλμ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ νμΈν©λλ€.every: λͺ¨λ μμκ° μ‘°κ±΄μ λ§μ‘±νλμ§ νμΈν©λλ€.toArray: μ΄ν°λ μ΄ν°λ₯Ό λ°°μ΄λ‘ λ³νν©λλ€.
enumerate μ΄ν°λ μ΄ν° ν¬νΌ μκ°
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ μ΄ν°λ μ΄ν°μ κ° μμμ λν μΈλ±μ€μ κ°μ λͺ¨λ μ 곡νλλ‘ μ€κ³λμμ΅λλ€. μ΄λ μνμ€μμ μμμ μμΉμ λ°λΌ μμ
μ μνν΄μΌ ν λ νΉν μ μ©ν©λλ€.
enumerate ν¬νΌλ λ³Έμ§μ μΌλ‘ κ°μ μ΄ν°λ μ΄ν°λ₯Ό [μΈλ±μ€, κ°] μμ μ΄ν°λ μ΄ν°λ‘ λ³νν©λλ€.
ꡬ문 λ° μ¬μ©λ²
enumerateλ₯Ό μ¬μ©νλ ꡬ문μ λ€μκ³Ό κ°μ΅λλ€:
const enumeratedIterator = iterator.enumerate();
μ¬κΈ°μ iteratorλ μ΄κ±°νλ €λ μ΄ν°λ μ΄ν°μ΄λ©°, enumeratedIteratorλ [μΈλ±μ€, κ°] μμ μμ±νλ μλ‘μ΄ μ΄ν°λ μ΄ν°μ
λλ€.
μμ : λ°°μ΄ μ΄κ±°νκΈ°
λ°°μ΄μ μ΄κ±°νλ κ°λ¨ν μμ λ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€:
const myArray = ['apple', 'banana', 'cherry'];
const iterator = myArray[Symbol.iterator]();
const enumeratedIterator = iterator.enumerate();
for (const [index, value] of enumeratedIterator) {
console.log(`Index: ${index}, Value: ${value}`);
}
// μΆλ ₯:
// Index: 0, Value: apple
// Index: 1, Value: banana
// Index: 2, Value: cherry
μ΄ μμ μμλ λ¨Όμ myArray[Symbol.iterator]()λ₯Ό μ¬μ©νμ¬ λ°°μ΄μμ μ΄ν°λ μ΄ν°λ₯Ό μμ±ν©λλ€. κ·Έλ° λ€μ enumerate ν¬νΌλ₯Ό μ μ©νμ¬ μ΄κ±°λ μ΄ν°λ μ΄ν°λ₯Ό μ»μ΅λλ€. λ§μ§λ§μΌλ‘ for...of 루νλ₯Ό μ¬μ©νμ¬ [μΈλ±μ€, κ°] μμ λ°λ³΅νκ³ μ½μμ μΆλ ₯ν©λλ€.
enumerate μ¬μ©μ μ΄μ
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ μ¬λ¬ μ΄μ μ μ 곡ν©λλ€:
- κ°λ μ±: μΈλ±μ€μ κ°μ λͺ¨λ λͺ μμ μΌλ‘ μ 곡νμ¬ μ½λμ κ°λ μ±κ³Ό ννλ ₯μ λμ λλ€.
- κ°κ²°μ±: 루νμμ μλμΌλ‘ μΈλ±μ€λ₯Ό μΆμ ν νμμ±μ μ€μ¬μ€λλ€.
- ν¨μ¨μ±: νΉν λκ·λͺ¨ λ°μ΄ν°μ μ΄λ 볡μ‘ν μ΄ν°λ μ΄ν°λ‘ μμ ν λ μλμΌλ‘ μΈλ±μ€λ₯Ό μΆμ νλ κ²λ³΄λ€ λ ν¨μ¨μ μΌ μ μμ΅λλ€.
- ν¨μν νλ‘κ·Έλλ°: μ μΈμ λ°©μμΌλ‘ λ°μ΄ν° λ³ν μμ μ ν μ μκ² νμ¬ ν¨μν νλ‘κ·Έλλ° μ€νμΌμ μ΄μ§ν©λλ€.
enumerateμ μ¬μ© μ¬λ‘
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ λ€μν μλ리μ€μμ μ μ©ν©λλ€:
1. μμΉ μ»¨ν μ€νΈλ₯Ό μ¬μ©ν λ°μ΄ν° μ²λ¦¬
μνμ€μμ μμμ μμΉμ λ°λΌ μμ
μ μνν΄μΌ ν λ, enumerateλ μ½λλ₯Ό λ¨μνν μ μμ΅λλ€. μλ₯Ό λ€μ΄, ν
μ΄λΈμ 격νμ κ°μ‘° νμνκ±°λ μΈλ±μ€μ λ°λΌ λ€λ₯Έ λ³νμ μ μ©ν μ μμ΅λλ€.
μμ : ν μ΄λΈμμ 격ν κ°μ‘° νμνκΈ°
const data = ['Row 1', 'Row 2', 'Row 3', 'Row 4', 'Row 5'];
const iterator = data[Symbol.iterator]();
const enumeratedIterator = iterator.enumerate();
let tableHTML = '';
for (const [index, row] of enumeratedIterator) {
const className = index % 2 === 0 ? 'even' : 'odd';
tableHTML += `${row} `;
}
tableHTML += '
';
// μ΄μ tableHTMLμ HTML λ¬Έμμ μ½μ
ν μ μμ΅λλ€
μ΄ μμ μμλ enumerateκ° μ 곡νλ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ νμ΄ 'even' λλ 'odd' ν΄λμ€λ₯Ό κ°μ ΈμΌ νλμ§ κ²°μ ν©λλ€.
2. μ¬μ©μ μ§μ λ°λ³΅ λ‘μ§ κ΅¬ν
enumerateλ₯Ό μ¬μ©νμ¬ μμλ₯Ό 건λλ°κ±°λ μΈλ±μ€μ λ°λΌ λ³νμ μ μ©νλ λ± μ¬μ©μ μ§μ λ°λ³΅ λ‘μ§μ ꡬνν μ μμ΅λλ€.
μμ : μΈ λ²μ§Έ μμλ§λ€ 건λλ°κΈ°
const data = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
const iterator = data[Symbol.iterator]();
const enumeratedIterator = iterator.enumerate();
const result = [];
for (const [index, value] of enumeratedIterator) {
if (index % 3 !== 2) {
result.push(value);
}
}
console.log(result); // μΆλ ₯: ['A', 'B', 'D', 'E', 'G', 'H']
μ΄ μμ μμλ μΈλ±μ€κ° 3μ λ°°μκ° μλ λ κ°μ μΆκ°νμ¬ μνμ€μ μΈ λ²μ§Έ μμλ₯Ό 건λλλλ€.
3. λΉλκΈ° λ°μ΄ν° μ€νΈλ¦Ό μμ
enumerateλ APIλ μΉ μμΌμμ μ»μ κ²κ³Ό κ°μ λΉλκΈ° λ°μ΄ν° μ€νΈλ¦Όκ³Ό ν¨κ» μ¬μ©ν μλ μμ΅λλ€. μ΄ κ²½μ° μΌλ°μ μΌλ‘ λΉλκΈ° μ΄ν°λ μ΄ν°λ₯Ό μ¬μ©νκ² λ©λλ€.
μμ : λΉλκΈ° λ°μ΄ν° μ€νΈλ¦Ό μ΄κ±°νκΈ°
asynce function* generateData() {
yield 'Data 1';
await new Promise(resolve => setTimeout(resolve, 500));
yield 'Data 2';
await new Promise(resolve => setTimeout(resolve, 500));
yield 'Data 3';
}
async function processData() {
const asyncIterator = generateData();
// enumerateκ° λΉλκΈ° μ΄ν°λ μ΄ν°μ μλνλ€κ³ κ°μ νλ©΄ μ¬μ©λ²μ μ μ¬ν©λλ€
// κ·Έλ¬λ λΉλκΈ° enumerateλ₯Ό μ§μνλ ν΄λ¦¬νμ΄λ ν¬νΌ λΌμ΄λΈλ¬λ¦¬κ° νμν μ μμ΅λλ€
// μ΄ μμ λ enumerateκ° κΈ°λ³Έμ μΌλ‘ λΉλκΈ° μ΄ν°λ μ΄ν°λ₯Ό μ§μν κ²½μ°μ μλλ μ¬μ©λ²μ 보μ¬μ€λλ€
const enumeratedIterator = asyncIterator.enumerate();
for await (const [index, value] of enumeratedIterator) {
console.log(`Index: ${index}, Value: ${value}`);
}
}
processData();
// μμ μΆλ ₯ (μ μ ν λΉλκΈ° enumerate ꡬν μ):
// Index: 0, Value: Data 1
// Index: 1, Value: Data 2
// Index: 2, Value: Data 3
μ°Έκ³ : νμ¬ λ€μ΄ν°λΈ enumerate ν¬νΌλ λΉλκΈ° μ΄ν°λ μ΄ν°λ₯Ό μ§μ μ§μνμ§ μμ μ μμ΅λλ€. enumerateμ λΉλκΈ° λ²μ μ μ 곡νλ ν΄λ¦¬νμ΄λ ν¬νΌ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μΌ ν μλ μμ΅λλ€.
4. λ€λ₯Έ μ΄ν°λ μ΄ν° ν¬νΌμ ν΅ν©
enumerateλ λ€λ₯Έ μ΄ν°λ μ΄ν° ν¬νΌμ κ²°ν©νμ¬ λ 볡μ‘ν λ°μ΄ν° λ³νμ μνν μ μμ΅λλ€. μλ₯Ό λ€μ΄, enumerateλ₯Ό μ¬μ©νμ¬ κ° μμμ μΈλ±μ€λ₯Ό μΆκ°ν λ€μ mapμ μ¬μ©νμ¬ μΈλ±μ€μ κ°μ κΈ°λ°μΌλ‘ μμλ₯Ό λ³νν μ μμ΅λλ€.
μμ : enumerateμ map κ²°ν©νκΈ°
const data = ['a', 'b', 'c', 'd'];
const iterator = data[Symbol.iterator]();
const enumeratedIterator = iterator.enumerate();
const transformedData = Array.from(enumeratedIterator.map(([index, value]) => {
return `[${index}]: ${value.toUpperCase()}`;
}));
console.log(transformedData); // μΆλ ₯: ['[0]: A', '[1]: B', '[2]: C', '[3]: D']
μ΄ μμ μμλ λ¨Όμ λ°μ΄ν°λ₯Ό μ΄κ±°νμ¬ κ° μμμ μΈλ±μ€λ₯Ό μ»μ΅λλ€. κ·Έλ° λ€μ mapμ μ¬μ©νμ¬ κ° μμλ₯Ό μΈλ±μ€μ κ°μ λλ¬Έμ λ²μ μ ν¬ν¨νλ λ¬Έμμ΄λ‘ λ³νν©λλ€. λ§μ§λ§μΌλ‘ Array.fromμ μ¬μ©νμ¬ κ²°κ³Ό μ΄ν°λ μ΄ν°λ₯Ό λ°°μ΄λ‘ λ³νν©λλ€.
λ€μν μ°μ μμμ μ€μ μμ λ° μ¬μ© μ¬λ‘
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ λ€μν μ°μ
κ³Ό μ¬μ© μ¬λ‘μ μ μ©λ μ μμ΅λλ€:
1. μ μμκ±°λ
- μ ν λͺ©λ‘: μ¬μ΄ μ°Έμ‘°λ₯Ό μν΄ λ²νΈκ° λ§€κ²¨μ§ μΈλ±μ€μ ν¨κ» μ ν λͺ©λ‘μ νμν©λλ€.
- μ£Όλ¬Έ μ²λ¦¬: λ°°μ‘ λ° λ°°λ¬μ μν΄ μ£Όλ¬Έμ μλ νλͺ©μ μμλ₯Ό μΆμ ν©λλ€.
- μΆμ² μμ€ν : μ¬μ©μμ λΈλΌμ°μ§ κΈ°λ‘μμ νλͺ©μ μμΉμ λ°λΌ λ€λ₯Έ μΆμ² μκ³ λ¦¬μ¦μ μ μ©ν©λλ€.
2. κΈμ΅
- μκ³μ΄ λΆμ: μΈλ±μ€κ° κΈ°κ°μ λνλ΄λ μκ°μ λν κΈμ΅ λ°μ΄ν°λ₯Ό λΆμν©λλ€.
- κ±°λ μ²λ¦¬: κ°μ¬ λ° κ·μ μ€μλ₯Ό μν΄ κ±°λ μμλ₯Ό μΆμ ν©λλ€.
- μν κ΄λ¦¬: μνμ€μμ κ±°λμ μμΉμ λ°λΌ λ€λ₯Έ μν νκ° λͺ¨λΈμ μ μ©ν©λλ€.
3. μλ£
- νμ λͺ¨λν°λ§: μΈλ±μ€κ° μΈ‘μ μκ°μ λνλ΄λ μκ°μ λν νμ λ°μ΄ν°λ₯Ό λΆμν©λλ€.
- μλ£ μμ: μΈλ±μ€κ° μ¬λΌμ΄μ€ λ²νΈλ₯Ό λνλ΄λ μμλλ‘ μλ£ μμμ μ²λ¦¬ν©λλ€.
- μ μ½ κ°λ°: κ·μ μ€μλ₯Ό μν΄ μ μ½ κ°λ° κ³Όμ μ λ¨κ³ μμλ₯Ό μΆμ ν©λλ€.
4. κ΅μ‘
- μ±μ μμ€ν : κ°λ³ νκ°μ μμμ κ°μ λ°λΌ μ±μ μ κ³μ°ν©λλ€.
- 컀리νλΌ μ€κ³: νμ΅ κ²°κ³Όλ₯Ό μ΅μ ννκΈ° μν΄ κ΅μ‘ μ½ν μΈ λ° νλμ μμλλ‘ λ°°μ΄ν©λλ€.
- νμ μ±κ³Ό λΆμ: νκ° μμμ λν νμ μ±κ³Ό λ°μ΄ν°λ₯Ό λΆμν©λλ€.
5. μ μ‘°μ
- μμ° λΌμΈ λͺ¨λν°λ§: μ μ‘° 곡μ μ λ¨κ³ μμλ₯Ό μΆμ ν©λλ€.
- νμ§ κ΄λ¦¬: μμ° λΌμΈμμ νλͺ©μ μμΉμ λ°λΌ λ€λ₯Έ νμ§ κ΄λ¦¬ κ²μ¬λ₯Ό μ μ©ν©λλ€.
- μ¬κ³ κ΄λ¦¬: μ κ³ λ° μΆκ³ λ νλͺ©μ μμμ λ°λΌ μ¬κ³ μμ€μ κ΄λ¦¬ν©λλ€.
ν΄λ¦¬ν λ° λΈλΌμ°μ νΈνμ±
λͺ¨λ μλ‘μ΄ μλ°μ€ν¬λ¦½νΈ κΈ°λ₯κ³Ό λ§μ°¬κ°μ§λ‘ λΈλΌμ°μ νΈνμ±μ μ€μν κ³ λ € μ¬νμ λλ€. μ΄ν°λ μ΄ν° ν¬νΌκ° μ΅μ λΈλΌμ°μ μμ μ μ λ λ§μ΄ μ§μλκ³ μμ§λ§, μ΄μ λΈλΌμ°μ λ νκ²½κ³Όμ νΈνμ±μ 보μ₯νκΈ° μν΄ ν΄λ¦¬νμ μ¬μ©ν΄μΌ ν μλ μμ΅λλ€.
ν΄λ¦¬νμ μλ‘μ΄ κΈ°λ₯μ κΈ°λ³Έμ μΌλ‘ μ§μνμ§ μλ μ΄μ νκ²½μμ ν΄λΉ κΈ°λ₯μ κΈ°λ₯μ μ 곡νλ μ½λ μ‘°κ°μ λλ€.
npmμ΄λ λ€λ₯Έ ν¨ν€μ§ μ μ₯μμμ μ΄ν°λ μ΄ν° ν¬νΌμ λν ν΄λ¦¬νμ μ°Ύμ μ μμ΅λλ€. ν΄λ¦¬νμ μ¬μ©ν λλ νλ‘μ νΈμ ν¬ν¨μν€κ³ enumerate μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©νκΈ° μ μ λ‘λν΄μΌ ν©λλ€.
λͺ¨λ² μ¬λ‘ λ° κ³ λ € μ¬ν
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ₯Ό μ¬μ©ν λ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€:
- μ€λͺ
μ μΈ λ³μ μ΄λ¦ μ¬μ©: μ½λ κ°λ
μ±μ λμ΄κΈ° μν΄ μΈλ±μ€μ κ°μ λͺ
ννκ³ μ€λͺ
μ μΈ λ³μ μ΄λ¦μ μ¬μ©νμμμ€. μλ₯Ό λ€μ΄,
[i, v]λμ[itemIndex, itemValue]λ₯Ό μ¬μ©νμμμ€. - μλ³Έ λ°μ΄ν° μμ λ°©μ§: κ°λ₯ν ν μ½λ°± ν¨μ λ΄μμ μλ³Έ λ°μ΄ν°λ₯Ό μμ νμ§ λ§μμμ€. μ΄λ μκΈ°μΉ μμ λΆμμ©μ μ΄λνκ³ μ½λ λλ²κΉ μ μ΄λ ΅κ² λ§λ€ μ μμ΅λλ€.
- μ±λ₯ κ³ λ €: νΉν λκ·λͺ¨ λ°μ΄ν°μ
μΌλ‘ μμ
ν λ μ±λ₯μ μ μνμμμ€.
enumerateλ ν¨μ¨μ μΌ μ μμ§λ§, μ½λ°± ν¨μ λ΄μ 볡μ‘ν μμ μ μ¬μ ν μ±λ₯μ μν₯μ μ€ μ μμ΅λλ€. - νμ μμ μ±μ μν νμ μ€ν¬λ¦½νΈ μ¬μ©: νμ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©νλ κ²½μ°, νμ μμ μ±μ ν₯μμν€κ³ μ μ¬μ μΈ μ€λ₯λ₯Ό μ‘°κΈ°μ λ°κ²¬νκΈ° μν΄ μΈλ±μ€ λ° κ° λ³μμ νμ μ£Όμμ μΆκ°νλ κ²μ κ³ λ €νμμμ€.
enumerateμ λμ
enumerateλ μ΄ν°λ μ΄ν°μ μΈλ±μ€μ κ°μ λͺ¨λ μ κ·Όνλ νΈλ¦¬ν λ°©λ²μ μ 곡νμ§λ§, μ¬μ©ν μ μλ λ€λ₯Έ μ κ·Ό λ°©μλ μμ΅λλ€:
1. μ ν΅μ μΈ for 루ν
μ ν΅μ μΈ for 루νλ μΈλ±μ€μ κ°μ λν λͺ
μμ μΈ μ μ΄λ₯Ό μ 곡ν©λλ€:
const data = ['a', 'b', 'c'];
for (let i = 0; i < data.length; i++) {
console.log(`Index: ${i}, Value: ${data[i]}`);
}
μ΄ μ κ·Ό λ°©μμ κ°λ¨νμ§λ§, enumerateλ₯Ό μ¬μ©νλ κ²λ³΄λ€ λ μ₯ν©νκ³ κ°λ
μ±μ΄ λ¨μ΄μ§ μ μμ΅λλ€.
2. forEach λ©μλ
forEach λ©μλλ κ°κ³Ό μΈλ±μ€ λͺ¨λμ μ κ·Όν μ μμ΅λλ€:
const data = ['a', 'b', 'c'];
data.forEach((value, index) => {
console.log(`Index: ${index}, Value: ${value}`);
});
κ·Έλ¬λ forEachλ λΆμμ©μ μν΄ μ€κ³λμμΌλ©° μλ‘μ΄ μ΄ν°λ μ΄ν°λ₯Ό μμ±νκ±°λ λ°μ΄ν°λ₯Ό λ³ννλ λ° μ¬μ©ν μ μμ΅λλ€.
3. μ¬μ©μ μ§μ μ΄ν°λ μ΄ν°
[μΈλ±μ€, κ°] μμ μμ±νλ μ¬μ©μ μ§μ μ΄ν°λ μ΄ν°λ₯Ό λ§λ€ μ μμ΅λλ€:
function* enumerate(iterable) {
let index = 0;
for (const value of iterable) {
yield [index, value];
index++;
}
}
const data = ['a', 'b', 'c'];
for (const [index, value] of enumerate(data)) {
console.log(`Index: ${index}, Value: ${value}`);
}
μ΄ μ κ·Ό λ°©μμ λ°λ³΅ νλ‘μΈμ€μ λν λ λ§μ μ μ΄λ₯Ό μ 곡νμ§λ§, enumerate μ΄ν°λ μ΄ν° ν¬νΌ(κΈ°λ³Έμ μΌλ‘ μ¬μ© κ°λ₯νκ±°λ ν΄λ¦¬νμ ν΅ν΄)λ₯Ό μ¬μ©νλ κ²λ³΄λ€ λ λ§μ μ½λκ° νμν©λλ€.
κ²°λ‘
enumerate μ΄ν°λ μ΄ν° ν¬νΌλ μ¬μ© κ°λ₯ν κ²½μ°, μλ°μ€ν¬λ¦½νΈμ λ°μ΄ν° μ²λ¦¬ λ₯λ ₯μ ν¬κ² ν₯μμν€λ κ²μ λνλ
λλ€. μ΄ν°λ μ΄ν°μ κ° μμμ λν μΈλ±μ€μ κ°μ λͺ¨λ μ 곡ν¨μΌλ‘μ¨ μ½λλ₯Ό λ¨μννκ³ κ°λ
μ±μ λμ΄λ©° λ³΄λ€ ν¨μν νλ‘κ·Έλλ° μ€νμΌμ μ΄μ§ν©λλ€. λ°°μ΄, λ¬Έμμ΄ λλ μ¬μ©μ μ§μ μ΄ν°λ μ΄ν°λ‘ μμ
νλ , enumerateλ μλ°μ€ν¬λ¦½νΈ κ°λ° λ¬΄κΈ°κ³ μμ κ·μ€ν λκ΅¬κ° λ μ μμ΅λλ€.
μλ°μ€ν¬λ¦½νΈκ° κ³μ λ°μ ν¨μ λ°λΌ enumerateμ κ°μ μ΄ν°λ μ΄ν° ν¬νΌλ ν¨μ¨μ μ΄κ³ ννλ ₯ μλ λ°μ΄ν° μ‘°μμ μν΄ μ μ λ μ€μν΄μ§ κ²μ
λλ€. μ΄λ¬ν μλ‘μ΄ κΈ°λ₯μ λ°μλ€μ΄κ³ μ½λμ μμ°μ±μ μ΄λ»κ² ν₯μμν¬ μ μλμ§ νμνμμμ€. λΈλΌμ°μ ꡬνμ μ£Όμνκ±°λ μ μ ν ν΄λ¦¬νμ μ¬μ©νμ¬ μ€λλ νλ‘μ νΈμμ enumerateμ νμ νμ©νκΈ° μμνμμμ€. κ°μ₯ μ΅μ μ 보λ₯Ό μ»μΌλ €λ©΄ 곡μ ECMAScript μ¬μ λ° λΈλΌμ°μ νΈνμ± μ°¨νΈλ₯Ό νμΈνλ κ²μ μμ§ λ§μμμ€.